This invention relates generally to web pages, and more particularly to a rendering architecture for web pages.
With the growing popularity of the Internet and Internet-type technologies such as intranets, there has come a realization that users are interested in receiving personalized information via these technologies. For example, whereas before a user may have requested a web page from a web site such as http://www.msn.com that may have returned the same information regardless of the identification of the user, now the user may desire more specific information. For example, a user may desire the information returned from a given weather page to be relevant to the user""s location. As another example, a user may desire that the information returned from a technical support page be relevant to only the applications installed on the user""s computer.
Delivery of personalized web pages by a web site generally requires other considerations for the architecture of web site as compared to non-personalized web pages. For example, the rendering of personalized web pages on the Internet desirably needs to be fast and scalable, like other web sites. However, potentially unlike other web sites, it should also desirably be easy to modify the look or presentation of the web site daily or weekly. In addition, it should desirably be easy to modify the look or presentation based on the identification of the user. This makes the development of such web site architectures more difficult.
Current Internet or intranet services that intend to provide personalized and personally relevant content to users usually use server-side scripting, server-side objects (such as what are known as Common Gateway Interface (CGI) programs), as well as other methodologies. However, server-side scripting is expensive computationally speaking, because of run-time parsing and interpretation that must be performed for every request. In addition, objects are often instantiated and released repeatedly, which reduces performance, and the code itself is intermingled with display elements in HyperText Markup Language (HTML) format, which makes maintenance more difficult.
Still other methodologies include reliance on database look-ups and attempts to cache previous function calls and the content returned from those calls. However, any server-side code that relies upon database look-ups as part of their rendering process for web pages generally is also costly, and does not scale well. Previous attempts to cache function calls and the content returned therefrom have frequently been hampered by too much complexity and were generally not amenable to being scaled.
For these and other reasons, there is a need for the present invention.
The invention provides for an architecture for rendering web pages. In one embodiment, a system includes a first server, a first-level cache, a second server, a second-level cache and one or more provider objects. The first server receives a request from a requester for a web page. The web page has a number of clips in an arrangement. The server determines the clips and the arrangement based on a key. The first-level cache, which is at the first server, stores the clips from which the first server is to assemble the web page. The second server populates the first-level cache with any of the clips not yet stored there. The second-level cache, which is at the second server, stores the clips from which the second server is to populate the first-level cache. The provider object or objects are at the second server, and populate the second-level cache with any of the clips not yet stored there.
The invention provides for advantages not found in the prior art. In one embodiment, the key is based on information supplied by the user, such that the information returned is personalized based thereon. Content may be constantly updated from different sources, by interface with the provider objects. High performance is obtained in part by caching commonly used page fragments, which may be assembled in different ways depending on the key. The architecture is extensible and maintainable because suppliers of contents can easily be added or modified, by adding or modifying the provider objects. Furthermore, the modification of content by adding, changing, or removing suppliers of content does not typically require the redevelopment of other components of the system. Types of personalization also can be easily added or modified.
The invention includes systems, methods, computers, and computer-readable media of varying scope. Besides the embodiments, advantages and aspects of the invention described here, the invention also includes other embodiments, advantages and aspects, as will become apparent by reading and studying the drawings and the following description.